package School_test;

import java.util.Scanner;

public class HD1002 {
    public static void main(String[] args) {
        // 初始化 Scanner 用于读取输入
        Scanner scanner = new Scanner(System.in);
        // 读取测试用例数量 T
        int testCaseCount = scanner.nextInt();
        // 消耗 nextInt() 后的换行符，避免后续 nextLine() 读取空字符串
        scanner.nextLine();

        // 遍历每个测试用例
        for (int caseNum = 1; caseNum <= testCaseCount; caseNum++) {
            // 读取当前测试用例的两个大整数（以空格分割）
            String[] numStrs = scanner.nextLine().split(" ");
            String numA = numStrs[0];
            String numB = numStrs[1];

            // 调用大数加法方法计算结果
            String sumResult = addLargeNumbers(numA, numB);

            // 按题目格式输出结果
            System.out.println("Case " + caseNum + ": ");
            System.out.println(numA + " + " + numB + " = " + sumResult);

            // 非最后一个测试用例，输出空行分隔
            if (caseNum != testCaseCount) {
                System.out.println();
            }
        }

        // 关闭 Scanner，释放资源
        scanner.close();
    }

    /**
     * 实现两个大整数（以字符串形式表示）的加法
     * @param a 第一个大整数的字符串
     * @param b 第二个大整数的字符串
     * @return 两数相加结果的字符串
     */
    private static String addLargeNumbers(String a, String b) {
        // 逆序两个字符串，便于从最低位开始计算
        StringBuilder reversedA = new StringBuilder(a).reverse();
        StringBuilder reversedB = new StringBuilder(b).reverse();

        // 存储计算结果（逆序）
        StringBuilder result = new StringBuilder();
        // 进位初始化为 0
        int carry = 0;
        // 遍历的最大长度为两个逆序字符串的长度最大值
        int maxLength = Math.max(reversedA.length(), reversedB.length());

        // 逐位计算
        for (int i = 0; i < maxLength; i++) {
            // 取当前位的数字，若超出字符串长度则为 0
            int digitA = (i < reversedA.length()) ? Character.getNumericValue(reversedA.charAt(i)) : 0;
            int digitB = (i < reversedB.length()) ? Character.getNumericValue(reversedB.charAt(i)) : 0;

            // 计算当前位总和（包含进位）
            int currentTotal = digitA + digitB + carry;
            // 更新进位（取总和的十位数字）
            carry = currentTotal / 10;
            // 存储当前位结果（取总和的个位数字）
            result.append(currentTotal % 10);
        }

        // 若遍历结束后仍有进位，追加到结果末尾
        if (carry != 0) {
            result.append(carry);
        }

        // 逆序结果字符串，得到最终的加法结果
        return result.reverse().toString();
    }
}

